【C++ 语言】Visual Studio 配置 POSIX 线程 ( Windows 不支持 POSIX 您所在的位置:网站首页 怎么用visual studio写c语言 【C++ 语言】Visual Studio 配置 POSIX 线程 ( Windows 不支持 POSIX

【C++ 语言】Visual Studio 配置 POSIX 线程 ( Windows 不支持 POSIX

2023-04-10 10:52| 来源: 网络整理| 查看: 265

文章目录POSIX 线程局限性POSIX 线程配置文件下载及目录说明Windows 动态库与静态库POSIX 线程配置 ( 项目配置 )POSIX 线程配置 ( Windows 动态库拷贝 | 注意 32 位库拷贝到 SysWOW64 目录 | 64 位库拷贝到 System32 目录 )配置代码测试POSIX 线程局限性

1. POSIX 线程局限性 : 在 Android , Linux , UNIX , MAC 中可以直接使用 POSIX , Windows 不可以直接使用 ;

2. Windows 配置 POSIX 线程 : 在 Visual Studio 上使用 POSIX 线程 , 需要引入第三方动态库 ;

POSIX 线程配置文件下载及目录说明

1. 下载 : POSIX 线程 Windows 配置文件下载地址 :

① 下载地址 1 : ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip ;② 下载地址 2 : https://jaist.dl.sourceforge.net/project/pthreads4w/pthreads-w32-2-9-1-release.zip ( 推荐 ) ;

2. Pre-built.2 目录下的相关文件说明 :

① dll 目录 : 存放动态库目录 , 其中包含 64位 和 32位 两种动态库 ;

下图是 64 位动态库 :

下图是 32 位 动态库 :

② lib 目录 ; 存放静态库的目录 , 该目录也是同时包含 64 位 与 32 位 静态库 ;③ include 目录 : 存放头文件的目录 ; Windows 动态库与静态库

动态库与静态库文件说明 :

① dll 动态库文件说明 : 在 Pre-built.2\dll\x64 目录下 , 是 64 位操作系统的动态库文件 , Windows 上的动态库是 .dll 文件 , 在 Android , Linux 上的动态库是 .so 文件 ;② lib 静态库文件说明 : 在 Windows 上静态库有两种 , 一种只是单纯的起到引导作用 , 引导如何去链接 dll 动态库 ; 另一种是直接定义了所有的静态函数 ;POSIX 线程配置 ( 项目配置 )

1. 拷贝文件 : 将 Pre-built.2 目录下的 include 和 lib 两个目录拷贝到 CMakeLists.txt 所在目录中 ;

2. CMake 配置 引入头文件 :

#引入头文件 include_directories("include")

3. CMake 配置 静态库 : 用于引导如何链接动态库和静态库 , 这里配置自动根据当前是 32 位还是 64 位程序 , 确定静态库的配置目录 ;

#配置自动根据当前是 32 位还是 64 位程序 , 确定静态库的配置目录 if(CMAKE_CL_64) set(platform x64) else() set(platform x86) endif() #配置静态库 , 用于引导如何链接动态库和静态库 link_directories("lib/${platform}")

4. CMake 配置链接库 : 链接生成的 005_Thread 和线程动态库 , 线程动态库是 lib/x64 下的 pthreadVC2.lib ;

#链接生成的 005_Thread 和线程动态库名字 # 动态库是 lib/x64 下的 pthreadVC2.lib target_link_libraries(005_Thread pthreadVC2)5. CMakeLists.txt 配置宏定义 : 在编译时会出现 " “timespec”:“struct” 类型重定义 " 报错信息 , 需要配置宏定义信息 ;#处理 “timespec”:“struct” 类型重定义 报错信息 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_STRUCT_TIMESPEC")

6. 完整的 CMakeLists.txt 配置 :

# CMakeList.txt: 005_Thread 的 CMake 项目,在此处包括源代码并定义 # 项目特定的逻辑。 # cmake_minimum_required (VERSION 3.8) #引入头文件 include_directories("include") #配置自动根据当前是 32 位还是 64 位程序 , 确定静态库的配置目录 if(CMAKE_CL_64) set(platform x64) else() set(platform x86) endif() #配置静态库 , 用于引导如何链接动态库和静态库 link_directories("lib/${platform}") #处理 “timespec”:“struct” 类型重定义 报错信息 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_STRUCT_TIMESPEC") # 将源代码添加到此项目的可执行文件。 add_executable (005_Thread "005_Thread.cpp" "005_Thread.h") #链接生成的 005_Thread 和线程动态库名字 # 动态库是 lib/x64 下的 pthreadVC2.lib target_link_libraries(005_Thread pthreadVC2) # TODO: 如有需要,请添加测试并安装目标。

上面的内容是项目配置内容, 下面是 Windows 系统配置内容 ;

POSIX 线程配置 ( Windows 动态库拷贝 | 注意 32 位库拷贝到 SysWOW64 目录 | 64 位库拷贝到 System32 目录 )

拷贝 .dll 动态库到 Windows 系统中 , 如果 Windows 系统中没有对应的动态库 , 运行时会报错 ;

1. 64 位的 .dll 动态库 : 将 Pre-built.2\dll\x64 目录下的两个 64 位 .dll 动态库 ( pthreadGC2.dll 和 pthreadVC2.dll ) 拷贝到 C:\Windows\System32 目录中 ;

① Pre-built.2\dll\x64 下的 动态库 : ② 拷贝到 C:\Windows\System32后的动态库 :

2. 32 位的 .dll 动态库 : 将 Pre-built.2\dll\x86 目录下的 5 个 32 位 .dll 动态库 ( pthreadGC2.dll , pthreadGCE2.dll , pthreadVC2.dll , pthreadVCE2.dll , pthreadVSE2.dll ) 拷贝到 C:\Windows\SysWOW64 目录中 ;

① 32 位 .dll 动态库 :② 拷贝 32 位 动态库 : 将 32 位动态库拷贝到 C:\Windows\SysWOW64 目录下 ;配置代码测试

线程使用代码 :

// 005_Thread.cpp: 定义应用程序的入口点。 // #include "005_Thread.h" #include using namespace std; int main() { cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有